#pragma once
#include <iostream>
#include <unistd.h>
#include <cstring>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


enum ExitCode
{
    OK = 0,
    USERAGE_ERR,//运行服务器
    USAGE_ERR,//运行客户端
    SOCKET_ERR,//创建套接字
    BIND_ERR,//绑定端口号,和ip
    LISTEN_ERR,//服务器监听
    CONNECT_ERR,//客户端请求建立连接
    FORK_ERR,//
    ACCEPT_ERR,//
    OPEN_ERR,//
    EPOLL_CREATE_ERR//epoll模型构建失败
};

#define COVN(addr) ((struct sockaddr*)&addr)

void SetNonBlock(int fd)//将传入的文件描述符变为非阻塞
{
    int f1 = fcntl(fd, F_GETFL);
    if(f1 < 0)
    {
        return;
    }
    fcntl(fd, F_SETFL, f1 | O_NONBLOCK);
}